## -*-m4-*-

dnl Process this file with autoconf to produce a configure script.

# FILE:
# configure.in
#
# FUNCTION:
# implements checks for a variety of system-specific functions
#
# Contents:
#   Headers   - Autoconf header stuff
#   Variables - Hardcoded variables
#   Programs  - Check for programs binaries
#   Functions - Check for functions
#   With      - Check for --with/without options
#   Enable    - Check for --enable/disable options
#   Libraries - Check for libraries
#   Footer    - Autoconf footer stuff

# Autoconf initialization
AC_PREREQ(2.59)
AC_INIT([GnuCash], [2.4.15], [gnucash-devel@gnucash.org])
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_SRCDIR(src/engine/Transaction.h)

#Change this in development versions when changing anything that
#affects stored data structures. Reset to zero when bumping version.
GNUCASH_NANO_VERSION=0
#This should be the earliest version in the form XXMMUUNN (XX=MAJOR,
#MM=MINOR, UU=MICRO, NN=NANO) or SVN revision if before 2.4.1 which is
#storage-compatible with the current version. See the comments in
#src/backend/dbi/gnc-backend-dbi.c:gnc_dbi_load.
GNUCASH_RESAVE_VERSION=19920
# Initialize automake -- make sure we have at least version 1.9
AM_INIT_AUTOMAKE([1.9 dist-bzip2])

# Parse out the version number
GNUCASH_VERSION_STRING=AC_PACKAGE_VERSION
GNUCASH_MAJOR_VERSION=`echo $GNUCASH_VERSION_STRING | [ sed -e 's/^\([^\.]*\)\.\([^.]*\)\.\(.*\)$/\1/' ]`
GNUCASH_MINOR_VERSION=`echo $GNUCASH_VERSION_STRING | [ sed -e 's/^\([^\.]*\)\.\([^.]*\)\.\(.*\)$/\2/' ]`
GNUCASH_MICRO_VERSION=`echo $GNUCASH_VERSION_STRING | [ sed -e 's/^\([^\.]*\)\.\([^.]*\)\.\(.*\)$/\3/' ]`
GNUCASH_LATEST_STABLE_SERIES=$GNUCASH_MAJOR_VERSION.$(($GNUCASH_MINOR_VERSION-($GNUCASH_MINOR_VERSION%2)))

# save any user/environment optimization flags before we muck with them in
# --enable-debug:
USER_OPTIMIZATION=""
for flag in $CFLAGS; do
  tmp_flag=`echo $flag | sed -e 's,-O.,,'`
  if test -z "$tmp_flag"; then
    USER_OPTIMIZATION="$USER_OPTIMIZATION ${tmp_flag}"
  fi
done

##  Do this first, because the other tests depend on it:

# Check for gcc and intltool (somehow breaks the suggested content
# order, doesn't it? Whatever.)
AC_PROG_CC
AM_PROG_CC_C_O
AC_GNU_SOURCE
AC_PROG_INTLTOOL

AM_GCONF_SOURCE_2

# Override gconf default install locations.  The default is to always
# put them into /etc.  This change puts them into $(prefix)/etc.
if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
  GCONF_SCHEMA_CONFIG_SOURCE="xml::${sysconfdir}/gconf/gconf.xml.defaults"
fi
GCONF_SCHEMA_CONFIG_SOURCE_DIRONLY=`echo $GCONF_SCHEMA_CONFIG_SOURCE | cut -d ':' -f 3`
AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE_DIRONLY)


AC_SUBST(GNUCASH_MAJOR_VERSION)
AC_SUBST(GNUCASH_MINOR_VERSION)
AC_SUBST(GNUCASH_MICRO_VERSION)
AC_SUBST(GNUCASH_NANO_VERSION)
AC_SUBST(GNUCASH_LATEST_STABLE_SERIES)

AC_DEFINE_UNQUOTED(GNUCASH_MAJOR_VERSION, $GNUCASH_MAJOR_VERSION,
    [GnuCash Major version number])
AC_DEFINE_UNQUOTED(GNUCASH_MINOR_VERSION, $GNUCASH_MINOR_VERSION,
    [GnuCash Minor version number])
AC_DEFINE_UNQUOTED(GNUCASH_MICRO_VERSION, $GNUCASH_MICRO_VERSION,
    [GnuCash Micro version number])
AC_DEFINE_UNQUOTED(GNUCASH_NANO_VERSION, $GNUCASH_NANO_VERSION,
    [GnuCash Nano version number])
AC_DEFINE_UNQUOTED(GNUCASH_RESAVE_VERSION, $GNUCASH_RESAVE_VERSION,
    [GnuCash earliest compatible databaseversion number])
AC_DEFINE_UNQUOTED(GNUCASH_LATEST_STABLE_SERIES, "$GNUCASH_LATEST_STABLE_SERIES",
    [Most recent stable GnuCash series])

dnl Set of available languages.
ALL_LINGUAS="ar bg ca cs da de el en_GB es_NI es eu fa fi fr he hu it ja ko lt lv nb ne nl pl pt_BR pt ro ru rw sk sv ta tr uk vi zh_CN zh_TW"

GETTEXT_PACKAGE=gnucash
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
    [GetText version number])

AM_GLIB_GNU_GETTEXT


# Enable only when we have autoconf --version >= 2.59
# on all platforms. Note that AC_PREREQ(2.59) may be
# insufficient to actually use v2.59 on OSX
#AC_CONFIG_MACRO_DIR(macros)

AC_PROG_INSTALL
PKG_PROG_PKG_CONFIG


###--------------------------------------------------------
### Optionally enable gtkmm plugin (requires c++ compiler)
###--------------------------------------------------------
enable_GTKMM=false

AC_ARG_ENABLE(gtkmm,
  [AS_HELP_STRING([--enable-gtkmm],[enable gtkmm gui])],
  [case "${enableval}" in
     yes) enable_GTKMM=true ;;
     no) enable_GTKMM=false ;;
     *) enable_GTKMM=false ;;
   esac]
  )

AS_IF([test x${enable_GTKMM} = "xtrue"],
  [
    # We require gtkmm, of course
    PKG_CHECK_MODULES(GTKMM, gtkmm-2.4 >= 2.16)
    # and also the c++ compiler
    AC_PROG_CXXCPP
    AC_PROG_CXX
    _COMPONENTS="$_COMPONENTS gtkmm"
  ])
AM_CONDITIONAL([WITH_GTKMM], [test x${enable_GTKMM} = "xtrue"])
# This section must come before AC_PROG_LIBTOOL because libtool
# must know about the c++ compiler.
###--------------------------------------------------------


AC_LIBTOOL_DLOPEN
AC_LIBTOOL_WIN32_DLL
AM_DISABLE_STATIC
AM_PROG_LIBTOOL

AC_SUBST(LIBTOOL_DEPS)

AC_ISC_POSIX
AC_C_BIGENDIAN
AC_PROG_MAKE_SET
AC_PROG_LN_S
AC_HEADER_STDC

AC_CHECK_HEADERS(limits.h sys/time.h sys/times.h sys/wait.h)
AC_CHECK_FUNCS(stpcpy memcpy timegm towupper)
AC_CHECK_FUNCS(setenv,,[
  AC_CHECK_FUNCS(putenv,,[
    AC_MSG_ERROR([Must have one of the setenv or putenv functions.])
  ])
])

STRUCT_TM_GMTOFF_CHECK
SCANF_LLD_CHECK
if test x$am_cv_scanf_lld = "xno"; then
  SCANF_QD_CHECK

  if test x$am_cv_scanf_qd = "xno"; then
    SCANF_I64D_CHECK
    if test x$am_cv_scanf_i64d = "xno"; then
      AC_MSG_ERROR([Cannot continue, no long long conversion support in scanf.])
    fi
  fi
fi

# test whether we are building directly from SVN/SVK
${srcdir}/util/gnc-svnversion ${srcdir} >/dev/null 2>&1
if test $? = 0 -o "x${BUILDING_FROM_SVN}" = "xyes" ; then
  BUILDING_FROM_SVN=yes

  # We need at least version 1.3.31 of SWIG because
  # that's when SWIG doesn't barf on the "inline" keyword in C headers anymore
  AC_PROG_SWIG(1.3.31)
else
  BUILDING_FROM_SVN=no
  # Make sure we've got swig-runtime.h and gnc-svninfo.h
  AC_CHECK_FILE(${srcdir}/src/swig-runtime.h, [],
    [AC_MSG_ERROR([

It looks like you are NOT building from Subversion
but I cannot find swig-runtime.h.  Check your PATH
and make sure we can find svnversion in your PATH!
Either that or contact gnucash-devel@gnucash.org because
the tarball you downloaded is broken.

    ])])
  AC_CHECK_FILE(${srcdir}/src/core-utils/gnc-svninfo.h, [],
    [AC_MSG_ERROR([

It looks like you are NOT building from Subversion
but I cannot find gnc-svninfo.h.  Check your PATH
and make sure we can find svnversion in your PATH!
Either that or contact gnucash-devel@gnucash.org because
the tarball you downloaded is broken.

    ])])
fi
AM_CONDITIONAL(BUILDING_FROM_SVN, test "x$BUILDING_FROM_SVN" = "xyes")

# Build dir adjustments
AM_CONDITIONAL(GNUCASH_SEPARATE_BUILDDIR, test "x${srcdir}" != "x.")

# Init binreloc
AM_BINRELOC

### --------------------------------------------------------------------------
### See if we have pkg-config

AC_PATH_PROG(PKG_CONFIG,pkg-config)
if test "x$PKG_CONFIG" = x; then
  # @*%&$ Ximian programmers renamed this application
  AC_PATH_PROG(PKG_CONFIG,pkgconfig)
  if test "x$PKG_CONFIG" = x; then
    AC_MSG_ERROR([Could not find the pkg-config (or pkgconfig) program.],)
  fi
fi

### --------------------------------------------------------------------------
### Glib checks..

AM_PATH_GLIB_2_0(2.12.0,,AC_MSG_ERROR([
*** GLIB >= 2.12 is required to build Gnucash; please make sure you have the
*** development headers installed. The latest version of GLIB is
*** always available at ftp://ftp.gnome.org/pub/gnome/sources/glib/.]),
    gthread gobject gmodule)

AC_MSG_CHECKING([for untested GLIB versions (glib >= 2.13.0)])
if $PKG_CONFIG 'glib-2.0 >= 2.13.0'
then
  AC_MSG_RESULT(yes)
  HAVE_UNTESTED_GLIB=yes
else
  AC_MSG_RESULT(no)
fi

AC_MSG_CHECKING([for GLib testing (glib >= 2.16.0)])
if $PKG_CONFIG 'glib-2.0 >= 2.16.0'
then
  AC_MSG_RESULT(yes)
  _have_glib_testing=yes
else
  AC_MSG_RESULT(no)
  _have_glib_testing=no
fi
AC_MSG_CHECKING([for GLib 2.32 or later (glib >=2.32.0)])
if $PKG_CONFIG "glib-2.0 >= 2.32.0"
then
  AC_MSG_RESULT(yes)
  AC_DEFINE([HAVE_GLIB_2_32], [1], [Configure gthread deprecations])
else
  AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([for GLib 2.36 or later (glib >=2.36.0)])
if $PKG_CONFIG "glib-2.0 >= 2.36.0"
then
  AC_MSG_RESULT(yes)
  AC_DEFINE([HAVE_GLIB_2_36], [1], [Configure g_type_init deprecation])
else
  AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(HAVE_GLIB_TESTING, test "x$_have_glib_testing" = "xyes")

AC_CHECK_HEADERS(dirent.h dlfcn.h dl.h utmp.h locale.h mcheck.h unistd.h wctype.h)

# Gnucash replaced dlopen/dlsym by the g_module functions; dlsym
# is needed optionally in one place for BSD linkers, though.
DL_LIB=
AC_CHECK_FUNCS(dlsym,,[
  AC_CHECK_LIB(dl, dlsym, DL_LIB="-ldl",[
    AC_CHECK_LIB(dld, shl_load, DL_LIB="-ldld",[
      AC_CHECK_FUNCS(dlsym, DL_LIB="")
    ])
  ])
])

oLIBS="$LIBS"
LIBS="$LIBS $DL_LIB"
AC_CHECK_FUNCS(dlerror,,)
LIBS="$oLIBS"
AC_SUBST(DL_LIB)

##################################################
# OS dependent checks
##################################################
AC_SUBST(SED)

# Set some defaults, they may be overridden below
REGEX_LIBS=""

AC_MSG_CHECKING(operating system)
case $host_os in
  rhapsody* | darwin[1567].*)
    AC_MSG_RESULT([darwin, but too old])
    AC_MSG_ERROR([This platform is not supported, please
update to latest  darwin])
    ;;
  darwin*)
    platform=darwin
    AC_MSG_RESULT($platform)
    AC_MSG_CHECKING(For GDK-Quartz)
    platform=osx
    _gdk_tgt=`$PKG_CONFIG --variable=target gdk-2.0`
    if test "x$_gdk_tgt" = xquartz; then
      platform=darwin/quartz
      AC_MSG_RESULT(yes)
      AC_DEFINE(GDK_QUARTZ,,[Using GDK Quartz (not X11)])
      PKG_CHECK_MODULES([GTK_MAC], gtk-mac-integration,
                        [_gtk_mac=yes], [_gtk_mac=no])
      if test "x$_gtk_mac" = xyes; then
        GTK_MAC_LIBS="${GTK_MAC_LIBS} -lobjc -framework Cocoa"
        GTK_MAC_CFLAGS="${GTK_MAC_CFLAGS} -xobjective-c"
      fi
      AC_MSG_RESULT(${_gtk_mac})
      AC_SUBST(GTK_MAC_LIBS)
      AC_SUBST(GTK_MAC_CFLAGS)
    else
      AC_MSG_RESULT(no)
    fi
    ;;
  mingw*|cygwin*)
    platform=win32
    AC_MSG_RESULT($platform)
    LT_PROG_RC

    AC_MSG_CHECKING(for native win32)
    case $host_os in
      mingw*)
        native_win32=yes
        AC_MSG_RESULT(yes)

        HTMLHELP_LIBS=
        AC_MSG_CHECKING(for HtmlHelpW)
        saved_LIBS="${LIBS}"
        LIBS="${LIBS} -lhtmlhelp"
        AC_LINK_IFELSE(
          [AC_LANG_PROGRAM(
             [[#include <windows.h>
               #include <htmlhelp.h>]],
             [HtmlHelpW(0, (wchar_t*)"", HH_HELP_CONTEXT, 0);])],
          [AC_MSG_RESULT(yes)
           HTMLHELP_LIBS=-lhtmlhelp
           AC_DEFINE(HAVE_HTMLHELPW,1,[System has HtmlHelpW])
          ], [AC_MSG_RESULT(no)])
        LIBS="${saved_LIBS}"
        AC_SUBST(HTMLHELP_LIBS)
        ;;
      *)
        AC_MSG_RESULT(no)
        ;;
    esac

    REGEX_LIBS="-lregex"

    # Adjust CFLAGS and LDFLAGS on Windows
    CFLAGS="${CFLAGS} -mms-bitfields"
    LDFLAGS="${LDFLAGS} -no-undefined -mwindows"
    ;;

  *)
    platform=linux/other
    AC_MSG_RESULT($platform)
    ;;
esac
AC_SUBST(REGEX_LIBS)

AM_CONDITIONAL(PLATFORM_LINUX, test "x$platform" = "xlinux/other")
AM_CONDITIONAL(PLATFORM_OSX, test "x$platform" = "xdarwin")
AM_CONDITIONAL(PLATFORM_OSX_QUARTZ, test "x$platform" = "xdarwin/quartz")
AM_CONDITIONAL(PLATFORM_WIN32, test "x$platform" = "xwin32")
AM_CONDITIONAL(OS_WIN32, test "x$native_win32" = "xyes")

# These are unavailable on windows/mingw32 and X11 isn't desired or
# required for MacOSX Quartz
if test "x$_gdk_tgt" = xquartz;
then
    AC_CHECK_HEADERS(glob.h)
else
    AC_CHECK_HEADERS(X11/Xlib.h glob.h)
fi
AM_CONDITIONAL(HAVE_X11_XLIB_H, test "x$ac_cv_header_X11_Xlib_h" = "xyes")
AC_CHECK_FUNCS(chown gethostname getppid getuid gettimeofday gmtime_r)
AC_CHECK_FUNCS(gethostid link)
##################################################



### --------------------------------------------------------------------------
### Guile version checks (should this be something other than the Gnome check?)

# If the user has given these values, cache them to override the
# detected values.
if test "x$GUILE_LIBS" != x; then
  saved_GUILE_LIBS="$GUILE_LIBS"
fi
if test "x$GUILE_INCS" != x; then
  saved_GUILE_INCS="$GUILE_INCS"
fi
GUILE_LIBS=""
GNOME_CHECK_GUILE

if test "x$saved_GUILE_LIBS" != x; then
  GUILE_LIBS="$saved_GUILE_LIBS"
fi
if test "x$saved_GUILE_INCS" != x; then
  GUILE_INCS="$saved_GUILE_INCS"
fi

AS_SCRUB_INCLUDE(GUILE_INCS)
AC_SUBST(GUILE_LIBS)

AM_GUILE_VERSION_CHECK(1.6.7, 1.8.99, , [AC_MSG_ERROR([

  guile does not appear to be installed correctly, or is not in the
  correct version range.  Perhaps you have not installed the guile
  development packages?
  Gnucash requires a version between 1.6.7 and 1.8.99 to build.
  
  Note: if you have installed guile 2 on your system as well, you
  may want to set environment variables GUILE and GUILE_CONFIG to
  point explicitly at the proper binaries for guile 1.8 before
  running configure. Eg:
  configure --enable-compile-warnings ... GUILE=guile1.8 GUILE_CONFIG=guile1.8-config
])])

AC_SUBST(GUILE)
AC_DEFINE_UNQUOTED(GNC_GUILE_MAJOR_VERSION, ${guile_major_version},
    [Guile Major version number])
AC_DEFINE_UNQUOTED(GNC_GUILE_MINOR_VERSION, ${guile_minor_version},
    [Guile Minor version number])
AC_DEFINE_UNQUOTED(GNC_GUILE_MICRO_VERSION, ${guile_micro_version},
    [Guile Micro version number])

AM_GUILE_VERSION_CHECK(1.8.0, 1.8.99, [
  AC_DEFINE(HAVE_GUILE18,1,[System has guile 1.8])
], )

AS_SCRUB_INCLUDE(CFLAGS)

AC_MSG_CHECKING([for SLIB support])
if ${GUILE} -c "(use-modules (ice-9 slib)) (require 'printf)" > /dev/null 2>&1
then
  AC_MSG_RESULT(yes)
else
  AC_MSG_ERROR([

Cannot find SLIB.  Are you sure you have it installed?
See http://bugzilla.gnome.org/show_bug.cgi?id=347922
and http://bugzilla.gnome.org/show_bug.cgi?id=483631

])
fi

### Check size of long_long - some guile's are broken.
AC_MSG_CHECKING(if guile long_long is at least as big as gint64)
GNC_OLDCFLAGS="$CFLAGS"
GNC_OLDLDFLAGS="$LDFLAGS"
CFLAGS="${GNOME_CFLAGS} ${GUILE_INCS} ${CFLAGS} ${GLIB_CFLAGS}"
LDFLAGS="${LDFLAGS} ${GLIB_LIBS}"
AC_TRY_RUN([
  #include <glib.h>
  #include <libguile/__scm.h>
  int main(int argc, char *argv[]) {
    return(!(sizeof(long_long) >= sizeof(gint64)));
  }
],[
  AC_MSG_RESULT(yes)
  AC_CHECK_LIB(guile, scm_long_long2num,
    AC_DEFINE(GUILE_LONG_LONG_OK,1,is sizeof(long_long) >= sizeof(gint64)))
],[
  AC_MSG_RESULT(no)
],[
  AC_MSG_RESULT(assuming yes)
  AC_CHECK_LIB(guile, scm_long_long2num,
    AC_DEFINE(GUILE_LONG_LONG_OK,1,is sizeof(long_long) >= sizeof(gint64)))
])
CFLAGS="$GNC_OLDCFLAGS"
LDFLAGS="$GNC_OLDLDFLAGS"

# One of the places this is critical is in gnc_scm_to_gint64 and inverse.
# However, I'm sure we require this elsewhere, so don't remove this test
# unless you've done sufficient code review/testing.
AC_MSG_CHECKING(if unsigned long is at least as big as guint32)
GNC_OLDCFLAGS="$CFLAGS"
GNC_OLDLDFLAGS="$LDFLAGS"
CFLAGS="${GNOME_CFLAGS} ${GUILE_INCS} ${CFLAGS} ${GLIB_CFLAGS}"
LDFLAGS="${LDFLAGS} ${GLIB_LIBS}"
AC_TRY_RUN([
  #include <glib.h>
  int main(int argc, char *argv[]) {
    return(!(sizeof(unsigned long) >= sizeof(guint32)));
  }
],[
  AC_MSG_RESULT(yes)
],[
  AC_MSG_RESULT(no)
  AC_MSG_ERROR(cannot continue, size of unsigned long too small.)
],[
  AC_MSG_RESULT(assuming yes)
])
CFLAGS="$GNC_OLDCFLAGS"
LDFLAGS="$GNC_OLDLDFLAGS"

### --------------------------------------------------------------------------
### See if we need guile-www

gnc_have_guile_www=no

AC_MSG_CHECKING([if guile needs our copy of (guile www)])
GUILE_MODULE_AVAILABLE(gnc_have_guile_www,[(www main)])

AM_CONDITIONAL(GNC_HAVE_GUILE_WWW, test "${gnc_have_guile_www}" = yes)

### --------------------------------------------------------------------------
### look for gconf

PKG_CHECK_MODULES(GCONF, gconf-2.0 >= "2.0")
# Look up gconftool-2
AC_PATH_PROG(GCONFTOOL, gconftool-2)
AC_SUBST(GCONFTOOL)
AC_SUBST(GCONF_CFLAGS)
AC_SUBST(GCONF_LIBS)

### --------------------------------------------------------------------------
### LIBXML -- GNOME_XML_LIB is defined by GNOME_XML_CHECK

LIBXML2_REQUIRED=2.5.10
PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= $LIBXML2_REQUIRED)
AS_SCRUB_INCLUDE(LIBXML2_CFLAGS)
AC_SUBST(LIBXML2_CFLAGS)
AC_SUBST(LIBXML2_LIBS)

oLIBS="$LIBS"
LIBS="$LIBS $LIBXML2_LIBS"

# Compile a test program to verify that the xml2 library works.
AC_CHECK_LIB(xml2, xmlElemDump, [:], [
  AC_MSG_ERROR([libxml2 is required for GnuCash])
  ])
LIBS="$oLIBS"

### --------------------------------------------------------------------------
### Zlib

ZLIB_LIBS=-lz
AC_SUBST(ZLIB_LIBS)

oLIBS="$LIBS"
LIBS="$LIBS $ZLIB_LIBS"
AC_CHECK_LIB(z, gzopen, [:], [
  AC_MSG_ERROR([zlib is required for GnuCash])
])
LIBS="$oLIBS"

### --------------------------------------------------------------------------
### Internal code part which is called "qof"

LIBQOF_LIBRARY_VERSION=1:4:0
AC_SUBST(LIBQOF_LIBRARY_VERSION)

QOF_CFLAGS='-I${top_builddir}/src/libqof/qof -I${top_srcdir}/src/libqof/qof'
QOF_LIBS='${top_builddir}/src/libqof/qof/libgnc-qof.la'
AC_SUBST(QOF_CFLAGS)
AC_SUBST(QOF_LIBS)

### ----------------------
### LIBDBI

AC_ARG_ENABLE(dbi,
  [AS_HELP_STRING([--disable-dbi],[don't build with the libdbi backend])],
  [case "${enableval}" in
     yes) want_dbi=true ;;
     no)  want_dbi=false ;;
     *) want_dbi=false ;;
   esac],
   [want_dbi=true])
if test x${want_dbi} = xtrue
then
  AC_CHECK_HEADERS(dbi/dbi.h)
  if test "x$ac_cv_header_dbi_dbi_h" != xno; then
    AC_ARG_WITH( dbi-dbd-dir,
      [AS_HELP_STRING([--with-dbi-dbd-dir=PATH],[specify location of libdbi drivers @<:@default=${libdir}/dbd@:>@])],
      GNC_DBD_DIR="$with_dbi_dbd_dir",
      GNC_DBD_DIR="")

    LIBDBI_LIBS=-ldbi
    _COMPONENTS="$_COMPONENTS dbi"
  else
    AC_MSG_ERROR([

 Unable to find <dbi/dbi.h>. Either install the libdbi development
 package (such as libdbi0-dev), or switch off the database backend of
 gnucash by --disable-dbi.
 Note: If you install libdbi, you should also install its database
 drivers (such as libdbd-sqlite3 libdbd-mysql libdbd-pgsql).
])
  fi
fi
AC_SUBST(LIBDBI_LIBS)
AC_SUBST(GNC_DBD_DIR)
AM_CONDITIONAL(CUSTOM_GNC_DBD_DIR, [test x"$GNC_DBD_DIR" != "x"])
AM_CONDITIONAL(WITH_DBI, [test "x$ac_cv_header_dbi_dbi_h" == xyes])

### --------------------------------------------------------------------------
### Variables
### Set up all the initial variable values...
GNC_CONFIGDIR='${sysconfdir}/gnucash'
GNC_DOC_INSTALL_DIR='${pkgdatadir}/doc'
GNC_INCLUDE_DIR='${includedir}/gnucash'
GNC_SCM_INSTALL_DIR='${pkgdatadir}/scm'
GNC_SHAREDIR='${pkgdatadir}'
GNC_LIBEXECDIR='${libexecdir}/gnucash'

GNC_ACCOUNTS_DIR='${GNC_SHAREDIR}/accounts'
GNC_CHECKS_DIR='${GNC_SHAREDIR}/checks'
GNC_GLADE_DIR='${GNC_SHAREDIR}/glade'
GNC_UI_DIR='${GNC_SHAREDIR}/ui'
GNC_PIXMAP_DIR='${GNC_SHAREDIR}/pixmaps'

AC_SUBST(GNC_ACCOUNTS_DIR)
AC_SUBST(GNC_CHECKS_DIR)
AC_SUBST(GNC_CONFIGDIR)
AC_SUBST(GNC_DOC_INSTALL_DIR)
AC_SUBST(GNC_GLADE_DIR)
AC_SUBST(GNC_UI_DIR)
AC_SUBST(GNC_INCLUDE_DIR)
AC_SUBST(GNC_PIXMAP_DIR)
AC_SUBST(GNC_SCM_INSTALL_DIR)
AC_SUBST(GNC_SHAREDIR)
AC_SUBST(GNC_LIBEXECDIR)

AC_ARG_ENABLE( debug,
  [AS_HELP_STRING([--enable-debug],[compile with debugging flags set])],
  [
     # remove any optimization flags...
     CFLAGS=`echo ${CFLAGS} | sed -e 's,-O.,,g'`
     # ...except for those the user wants.
     CFLAGS="${CFLAGS} -g ${USER_OPTIMIZATION}"
     LDFLAGS="${LDFLAGS} -g"
     AC_DEFINE(DEBUG_MEMORY,1,[Enable debug memory])
     AC_DEFINE(DEBUG_MEMORY,0,[Enable debug memory])
  ])

AC_ARG_ENABLE( profile,
  [AS_HELP_STRING([--enable-profile],[compile with profiling set])],
  CFLAGS="${CFLAGS} -pg"
  LDFLAGS="${LDFLAGS} -pg")

AC_ARG_ENABLE( ref-counts-dumps,
  [AS_HELP_STRING([--enable-ref-counts-dumps],[compile with ref count dumps])],
  AC_DEFINE(DEBUG_REFERENCE_COUNTING,1,[Enable reference count dumps])
  AC_DEFINE(DEBUG_REFERENCE_COUNTING,0,[Enable reference count dumps]) )


### --------------------------------------------------------------------------
### OFX
want_ofx=auto
AC_ARG_ENABLE( ofx,
  [AS_HELP_STRING([--enable-ofx],[compile with ofx support (needs LibOFX)])],
  [ case "$enableval" in
    yes) want_ofx=yes ;;
    no)  want_ofx=no ;;
    esac[]dnl
  ] )
AC_MSG_CHECKING(whether to use OFX)
case "${want_ofx}" in
  yes)  AC_MSG_RESULT(yes -- failure is fatal) ;;
  no)   AC_MSG_RESULT(no) ;;
  auto) AC_MSG_RESULT(yes -- automatic test) ;;
esac
if test x${want_ofx} != xno ; then
  PKG_CHECK_MODULES(LIBOFX, libofx, [want_ofx="yes"], [want_ofx="no"])
  _COMPONENTS="$_COMPONENTS ofx"
fi
AM_CONDITIONAL([WITH_OFX], [test "x${want_ofx}" != xno])
### --------------------------------------------------------------------------
### MT940
AC_ARG_ENABLE( mt940,
  [AS_HELP_STRING([--enable-mt940],[obsolete, included in --enable-aqbanking])],
  if test "x$enableval" != "xno" ; then
    AC_MSG_ERROR([--enable-mt940 is obsolete -- all functionality is already included in --enable-aqbanking])
  fi)

### --------------------------------------------------------------------------
### AqBanking

AC_ARG_ENABLE( aqbanking,
  [AS_HELP_STRING([--enable-aqbanking],[compile with AqBanking support])],
  if test "x$enableval" != "xno" ; then
    want_aqbanking=yes
  fi)
AC_ARG_ENABLE( hbci,
  [AS_HELP_STRING([--enable-hbci],[obsolete, replaced by --enable-aqbanking])],
  if test "x$enableval" != "xno" ; then
    AC_MSG_ERROR([--enable-hbci is obsolete -- the option has been renamed into --enable-aqbanking])
  fi)
if test x${want_aqbanking} = xyes ;
then
  # Check for Aqbanking library
  # We require aqbanking-4.0.0 because our implementation doesn't run
  # with earlier version anymore. (libaqbanking ships with a pkgconfig
  # file since its version 1.6.1.)
  PKG_CHECK_MODULES(AQBANKING, aqbanking >= 4.0.0 gwenhywfar, , [
    AC_MSG_ERROR([Could not find aqbanking >= 4.0.0. If you use --enable-aqbanking, you MUST have aqbanking installed!])
  ])
  # For libgwenhywfar > 3.99.20, look for its library gwengui-gtk2.
  PKG_CHECK_MODULES([GWENGUI_GTK2], [gwengui-gtk2 gwenhywfar], [has_gwengui_gtk2=1], [has_gwengui_gtk2=0])

  # also check for ktoblzcheck
  AC_CHECK_HEADERS(ktoblzcheck.h)
  if test "x$ac_cv_header_ktoblzcheck_h" != xno; then
    AQBANKING_LIBS="${AQBANKING_LIBS} -lktoblzcheck"
  fi

  AS_SCRUB_INCLUDE(AQBANKING_CFLAGS)
  AC_SUBST(AQBANKING_LIBS)
  AC_SUBST(AQBANKING_CFLAGS)
  _COMPONENTS="$_COMPONENTS aqbanking"
fi
AM_CONDITIONAL([WITH_AQBANKING], [test x${want_aqbanking} = xyes])

AC_ARG_WITH(qt3_wizard_package,
                 [AS_HELP_STRING([--with-qt3-wizard-package=name],[name of package containing qt3-wizard (aqbanking)])],
    [QT3_WIZARD_PACKAGE=$withval], [QT3_WIZARD_PACKAGE=aqbanking])
AC_DEFINE_UNQUOTED([QT3_WIZARD_PACKAGE],["$QT3_WIZARD_PACKAGE"],[Name of package containing qt3-wizard.])

### --------------------------------------------------------------------------
### i18n

# This variable is set by GLIB_WITH_NLS, called through
# AM_GLIB_GNU_GETTEXT above. Usually it is "share", but on some
# platforms it is "lib". Make sure it is set.
if test "x$DATADIRNAME" = "x"; then
  DATADIRNAME="share"
  AC_SUBST(DATADIRNAME)
fi

dnl check for nl_langinfo(D_FMT) which is missing on FreeBSD
LANGINFO_D_FMT_CHECK

dnl Enable locale-specific tax-related information in the accounts
AC_ARG_ENABLE( locale-specific-tax,
  [AS_HELP_STRING([--enable-locale-specific-tax],[enable localized tax categories (experimental, but used by the german SKR04 account chart)])],
  AC_DEFINE(LOCALE_SPECIFIC_TAX,1,Enable the experimental locale-specific tax categories) )

dnl Make sure we have a proper gettext installed
AC_MSG_CHECKING(for a valid gettext/gmsgfmt installation)
if test "$gt_cv_have_gettext" != "yes" || test "x$GMSGFMT" = "x"; then
  AC_MSG_RESULT(no)
  AC_MSG_ERROR([Cannot find Glib Gettext.  Maybe you need to install the gettext package?])
else
  AC_MSG_RESULT(yes - $GMSGFMT)
fi

# -------------------------------------------------------------------------
# URLs for MySQL and PostgreSQL testing
AC_ARG_WITH(test-mysql-url,
            AS_HELP_STRING([--with-test-mysql-url=URL],
                           [MySQL database URL for testing [default=none]]),
            [],[with_test_mysql_url=""])

TEST_MYSQL_URL=$with_test_mysql_url
AC_SUBST(TEST_MYSQL_URL)

AC_ARG_WITH(test-pgsql-url,
            AS_HELP_STRING([--with-test-pgsql-url=URL],
                           [PgSQL database URL for testing [default=none]]),
            [],[with_test_pgsql_url=""])

TEST_PGSQL_URL=$with_test_pgsql_url
AC_SUBST(TEST_PGSQL_URL)

### --------------------------------------------------------------------------
### help files

# Used to initialize doc-path.
AC_ARG_WITH( help-prefix,
  [AS_HELP_STRING([--with-help-prefix=PATH],[specify where to store the help files])],
  GNC_HELPDIR="$with_help_prefix",
  GNC_HELPDIR="\${datadir}")
AC_SUBST(GNC_HELPDIR)

### --------------------------------------------------------------------------
### Check for etags

AC_ARG_ENABLE( etags,
  [AS_HELP_STRING([--enable-etags],[enable automatic create of TAGS file])],
  if test x$enableval = xyes; then
     USE_ETAGS=1
  fi,
  USE_ETAGS=0)

if test x${USE_ETAGS} = x1; then
  AC_CHECK_PROG(GNC_ETAGS_FILE, etags, TAGS)
fi

AM_CONDITIONAL(GNC_ETAGS_FILE, test x${GNC_ETAGS_FILE} = xTAGS)

### --------------------------------------------------------------------------
### Check for ctags

AC_ARG_ENABLE( ctags,
  [AS_HELP_STRING([--enable-ctags],[enable automatic create of tags file])],
  if test x$enableval = xyes; then
     USE_CTAGS=1
  fi,
  USE_CTAGS=0)

if test x${USE_CTAGS} = x1; then
  AC_CHECK_PROG(GNC_CTAGS_FILE, ctags, tags)
fi

AM_CONDITIONAL(GNC_CTAGS_FILE, test x${GNC_CTAGS_FILE} = xtags)

### --------------------------------------------------------------------------
### Check for perl

# Check for perl, force version 5
AC_ARG_WITH(perl,
  [AS_HELP_STRING([--with-perl=FILE],[which perl executable to use])],
  PERL="${with_perl}")

# If the user didn't specify a perl, then go fetch.
if test x"$PERL" = x;
then
  AC_PATH_PROG(PERL, perl)
fi

# Make sure Perl was found
if test x"$PERL" = x; then
    AC_MSG_ERROR([Cannot find Perl. Try using the --with-perl flag.])
fi

# Make sure it's version 5 or later
if "$PERL" -e 'exit 1 if $] < 5.0'; then
    :
else
    AC_MSG_ERROR([Found ${PERL} reports version ]
                 [`${PERL} -e 'print $]'`, need version 5.*])
fi
AC_SUBST(PERL)

### ----------------------------------------------------------------------------
### Check for doxygen, mostly stolen from http://log4cpp.sourceforge.net/

AC_DEFUN([BB_ENABLE_DOXYGEN],
  [
    AC_ARG_ENABLE(doxygen, [AS_HELP_STRING([--enable-doxygen],[enable documentation generation with doxygen (auto)])])
    AC_ARG_ENABLE(dot, [AS_HELP_STRING([--enable-dot],[use 'dot' to generate graphs in doxygen (auto)])])
    AC_ARG_ENABLE(html-docs, [AS_HELP_STRING([--enable-html-docs],[enable HTML generation with doxygen (yes)])], [], [ enable_html_docs=yes])
    AC_ARG_ENABLE(latex-docs, [AS_HELP_STRING([--enable-latex-docs],[enable LaTeX documentation generation with doxygen (no)])], [], [ enable_latex_docs=no])
    if test "x$enable_doxygen" = xno; then
      enable_doc=no
    else
      AC_PATH_PROG(DOXYGEN, doxygen, , $PATH)
      if test x$DOXYGEN = x; then
        if test "x$enable_doxygen" = xyes; then
          AC_MSG_ERROR([could not find doxygen])
        fi
        enable_doc=no
      else
        enable_doc=yes
        AC_PATH_PROG(DOT, dot, , $PATH)
      fi
    fi
    AM_CONDITIONAL(DOC, test x$enable_doc = xyes)

    if test x$DOT = x; then
      if test "x$enable_dot" = xyes; then
        AC_MSG_ERROR([could not find dot])
      fi
      enable_dot=no
    else
      enable_dot=yes
    fi
    AM_CONDITIONAL(ENABLE_DOXYGEN, test x$enable_doc = xtrue)
    AC_SUBST(enable_dot)
    AC_SUBST(enable_html_docs)
    AC_SUBST(enable_latex_docs)
  ])

# check for doxygen
BB_ENABLE_DOXYGEN


### --------------------------------------------------------------------------
### Libraries
LIBS="$LIBS -lm"


### --------------------------------------------------------------------------
### Whether or not to build the GTK GUI components.
### When disabled, we don't even need to check for them!
### --------------------------------------------------------------------------

AC_ARG_ENABLE(gui,
  [AS_HELP_STRING([--disable-gui],[build without the GNOME GUI components of Gnucash])],
  [case "${enableval}" in
     yes) gnc_build_gui=true ;;
     no)  gnc_build_gui=false ;;
     *) gnc_build_gui=true ;;
   esac],
   [gnc_build_gui=true])

AM_CONDITIONAL(GNUCASH_ENABLE_GUI, test x${gnc_build_gui} = xtrue)

### --------------------------------------------------------------------------
### GNOME gui components -- built by default, but not if --enable-gui=no
### or --disable-gui is passed to autogen
### --------------------------------------------------------------------------

if test x${gnc_build_gui} = xtrue ;
then
  if test x${enable_compile_warnings} = x ;
  then
    enable_compile_warnings="yes"
  fi
  GNOME_COMPILE_WARNINGS

  PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.10)
  AS_SCRUB_INCLUDE(GTK_CFLAGS)
  AC_SUBST(GTK_CFLAGS)
  AC_SUBST(GTK_LIBS)

  AC_MSG_CHECKING([for untested GTK versions (gtk > 2.11.0)])
  if $PKG_CONFIG 'gtk+-2.0 > 2.11.0'
  then
    AC_MSG_RESULT(yes)
    HAVE_UNTESTED_GTK=yes
  fi

  AC_MSG_CHECKING([for GTK >= 2.12.0])
  if $PKG_CONFIG 'gtk+-2.0 >= 2.12.0'
  then
    AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_GTK_2_12,1,[System has gtk 2.12.0 or better])
    HAVE_GTK_2_12=yes
  fi

  PKG_CHECK_MODULES(GNOME, libgnomeui-2.0 >= 2.4)
  AS_SCRUB_INCLUDE(GNOME_CFLAGS)
  AC_SUBST(GNOME_CFLAGS)
  AC_SUBST(GNOME_LIBS)

  AC_MSG_CHECKING([for untested GNOME versions (libgnome >= 2.19.0)])
  if $PKG_CONFIG 'libgnome-2.0 >= 2.19.0'
  then
    AC_MSG_RESULT(yes)
    HAVE_UNTESTED_GNOME=yes
  else
    AC_MSG_RESULT(no)
  fi

  PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0)
  AS_SCRUB_INCLUDE(GDK_PIXBUF_CFLAGS)
  AC_SUBST(GDK_PIXBUF_CFLAGS)
  AC_SUBST(GDK_PIXBUF_LIBS)

  PKG_CHECK_MODULES(GLADE, libglade-2.0 >= 2.4)
  AS_SCRUB_INCLUDE(GLADE_CFLAGS)
  AC_SUBST(GLADE_CFLAGS)
  AC_SUBST(GLADE_LIBS)

   # checks for goffice
  PKG_CHECK_MODULES(GOFFICE, libgoffice-0.8 >= 0.7.0, [goffice=1], [
    PKG_CHECK_MODULES(GOFFICE, libgoffice-0.6 >= 0.6.0, [goffice=1], [
      PKG_CHECK_MODULES(GOFFICE, libgoffice-0.5 >= 0.5.1, [goffice=1], [AC_MSG_ERROR([Cannot find libgoffice.>= 0.5.1])])
    ])
  ])
  AS_SCRUB_INCLUDE(GOFFICE_CFLAGS)
  AC_SUBST(GOFFICE_CFLAGS)
  AC_SUBST(GOFFICE_LIBS)

  ### --------------------------------------------------------------------------
  ### determine the HTML engine

  AC_MSG_CHECKING([the html engine])
  AC_ARG_WITH(html_engine,
              AS_HELP_STRING([--with-html-engine=@<:@webkit/gtkhtml@:>@],
                             [Select HTML engine [default=gtkhtml]]),
              [],[with_html_engine="gtkhtml"])

  AC_MSG_RESULT([$with_html_engine])

  case "$with_html_engine" in

    gtkhtml)
      # check for gtkhtml >= 3.14 with gtkprint support
      gtkhtml=0
      PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14, [
        # check for gtkhtml >= 3.16 (includes gtk_html_print_operation_run())
        AC_MSG_CHECKING(for GtkHTML - version >= 3.16.0)
        if $PKG_CONFIG 'libgtkhtml-3.14 >= 3.16.0'; then
          AC_MSG_RESULT(yes)
          AC_DEFINE(HAVE_GTKHTML_3_16,1,[System has gtkhtml 3.16.0 or better])
          HAVE_GTKHTML_3_16=1
        else
          AC_MSG_RESULT(no)
        fi
      ], [
        AC_MSG_ERROR([cannot find GtkHTML >= 3.14])
      ])
      ;;

    webkit)
      PKG_CHECK_MODULES(WEBKIT, webkit-1.0 >= "1.0")
      AC_DEFINE(WANT_WEBKIT,1,[Use webkit instead of gtkhtml])
      case "$platform" in
        win32)
          # 1.1.90 has both functions
          AC_DEFINE(HAVE_WEBKIT_WEB_VIEW_LOAD_URI,1,[webkit_web_view_load_uri exists])
          AC_DEFINE(HAVE_WEBKIT_WEB_FRAME_PRINT_FULL,1,[webkit_web_frame_print_full exists])
          ;;
        *)
          # Unsure - check functions exist
          oLIBS="$LIBS"
          LIBS="$LIBS ${WEBKIT_LIBS}"
          AC_CHECK_FUNCS(webkit_web_view_load_uri)
          LIBS="$oLIBS"
          AC_MSG_CHECKING(for webkit_web_frame_print_full)
          saved_CFLAGS="${CFLAGS}"
          saved_LIBS="${LIBS}"
          CFLAGS="${CFLAGS} ${WEBKIT_CFLAGS}"
          LIBS="${LIBS} ${WEBKIT_LIBS}"
          AC_LINK_IFELSE(
              [AC_LANG_PROGRAM(
                  [[#include <webkit/webkit.h>]],
                  [[webkit_web_frame_print_full( 0, 0, 0, 0 );]])],
                  [AC_MSG_RESULT(yes)
                   AC_DEFINE(HAVE_WEBKIT_WEB_FRAME_PRINT_FULL,1,[webkit_web_frame_print_full exists])],
                  [AC_MSG_RESULT(no)])
          CFLAGS="${saved_CFLAGS}"
          LIBS="${saved_LIBS}"
          ;;
        esac
        ;;

    *) AC_MSG_ERROR([Invalid HTML engine: must be gtkhtml or webkit]) ;;
  esac

  AM_CONDITIONAL(HTML_USING_WEBKIT, [test x${with_html_engine} = xwebkit])
  AC_SUBST(WEBKIT_CFLAGS)
  AC_SUBST(WEBKIT_LIBS)
  AS_SCRUB_INCLUDE(GTKHTML_CFLAGS)

  dnl if Mac OSX, also scrub /sw/include
  dnl GIVEN_CFLAGS=$(echo $GIVEN_CFLAGS | sed -e "s;-I/sw/include ;;" | sed -e "s;-I/sw/include$;;")

  case $host_os in
    darwin*)
      GTKHTML_CFLAGS=`echo $GTKHTML_CFLAGS | ${SED} -e "s;-I/sw/include ;;" | ${SED} -e "s;-I/sw/include$;;"`
      GTKHTML_CFLAGS=`echo $GTKHTML_CFLAGS | ${SED} -e "s;-I/sw/include/gtkhtml ;;" | ${SED} -e "s;-I/sw/includ/gtkhtmle$;;"`
      ;;
  esac
  AC_SUBST(GTKHTML_CFLAGS)
  AC_SUBST(GTKHTML_LIBS)

  ###-----------------------------------------------------------------------
  ## Find a suitable password store

  case $host_os in
    darwin*)
      AC_DEFINE(HAVE_OSX_KEYCHAIN,1,[System has an OS X Key chain])
      ;;
    *)
      PKG_CHECK_MODULES(GNOME_KEYRING, gnome-keyring-1 >= "0.6",
          [AC_DEFINE(HAVE_GNOME_KEYRING,1,[System has gnome-keyring 0.6 or better])],
          [AC_DEFINE(HAVE_NO_KEYRING,1,[System has no suitable keyring service])])
  esac

  ### ----------------------------------------------------------------------

  AC_ARG_ENABLE( efence,
    [AS_HELP_STRING([--enable-efence],[link using efence])],
    if test x$enableval = xyes; then
      EFENCE_LIBS="-lefence"
      USE_EFENCE=1
      AC_DEFINE(USE_EFENCE,,We are using EFence)
    fi,
    USE_EFENCE=0
    EFENCE_LIBS="")
  AC_SUBST(EFENCE_LIBS)

  ### ----------------------------------------------------------------------
  ## For now, we just presume you're using the GNOME version.  The other
  ## UI's haven't been carried over during the automake transition.  At
  ## some point, if it's deemed worthwhile, they can be resurrected...

  GNOME=1
  AC_DEFINE(GNOME,,using GNOME)

else
  # GNOME_COMPILE_WARNINGS will add -Wall; no need to set it again.
  # also, only add it for GCC.
  if test ${GCC}x = yesx
  then
    # We should always see these errors...
    CFLAGS="${CFLAGS} -Wall"
  fi

fi
### End of gui-only checks

###-------------------------------------------------------------------------
### Selectively disable deprecated bits of glib/gdk/gtk/gnome
###-------------------------------------------------------------------------
if test x${HAVE_UNTESTED_GLIB} = "xyes"
then
  allow_deprecated=true
else
  allow_deprecated=false
fi
AC_ARG_ENABLE(deprecated-glib,
  [AS_HELP_STRING([--disable-deprecated-glib],[don't use deprecated glib functions])],
  [case "${enableval}" in
     no) allow_deprecated=false ;;
     *)  allow_deprecated=true ;;
   esac]
  )
if test x${allow_deprecated} != "xtrue"
then
  AC_DEFINE(G_DISABLE_DEPRECATED,1, [Don't use deprecated glib functions])
fi


if test x${HAVE_UNTESTED_GTK} = "xyes"
then
  allow_deprecated=true
else
  allow_deprecated=false
fi
AC_ARG_ENABLE(deprecated-gtk,
  [AS_HELP_STRING([--disable-deprecated-gtk],[don't use deprecated gtk, gdk or gdk-pixbuf functions])],
  [case "${enableval}" in
     no) allow_deprecated=false ;;
     *)  allow_deprecated=true ;;
   esac]
  )
if test x${allow_deprecated} != "xtrue"
then
  AC_DEFINE(GTK_DISABLE_DEPRECATED,1, [Don't use deprecated gtk functions])
  AC_DEFINE(GDK_DISABLE_DEPRECATED,1, [Don't use deprecated gdk functions])
  AC_DEFINE(GDK_PIXBUF_DISABLE_DEPRECATED,1, [Don't use deprecated gdk-pixbuf functions])
fi


if test x${HAVE_UNTESTED_GNOME} = "xyes"
then
  allow_deprecated=true
else
  allow_deprecated=false
fi
AC_ARG_ENABLE(deprecated-gnome,
  [AS_HELP_STRING([--disable-deprecated-gnome],[don't use deprecated gnome functions])],
  [case "${enableval}" in
     no) allow_deprecated=false ;;
     *)  allow_deprecated=true ;;
   esac]
  )
if test x${allow_deprecated} != "xtrue"
then
  AC_DEFINE(GNOME_DISABLE_DEPRECATED,1, [Don't use deprecated gnome functions])
fi

###-------------------------------------------------------------------------
### Stuff from Mac OS X Port
###-------------------------------------------------------------------------

AC_CHECK_FUNCS(pthread_mutex_init)
case $host_os in
  darwin*)
    AC_REPLACE_FUNCS(localtime_r gmtime_r)
    AC_LIBOBJ(strptime)
    ;;
  *)
    AC_REPLACE_FUNCS(strptime localtime_r gmtime_r)
    ;;
esac

#AC_REPLACE_FUNCS(scm_strptime)

if test x$am_cv_val_LC_MESSAGES = "xno"; then
  LC_MESSAGES_ENUM="LC_ALL"
else
  LC_MESSAGES_ENUM="LC_MESSAGES"
fi
AC_SUBST(LC_MESSAGES_ENUM)

###--------------------------------------------------------
### Make Python bindings optional
###--------------------------------------------------------
enable_python=false

AC_ARG_ENABLE(python-bindings,
  [AS_HELP_STRING([--enable-python-bindings],[enable python bindings])],
  [case "${enableval}" in
     yes) enable_python=true ;;
     no) enable_python=false ;;
     *) enable_python=true ;;
   esac]
  )
if test x${enable_python} = "xtrue"
then
  # Check for Python. We require python-2.4

  AM_PATH_PYTHON(2.4,,[
	   AC_MSG_ERROR([Could not find python >= 2.4. If you use --enable-python, you MUST have python installed!])
    ])
  AC_PYTHON_DEVEL(>= '2.4')
  if [ "x${PYTHON}" = "x" ]
  then
	   AC_MSG_ERROR([Could not find Python development files. Make sure that the correct python-devel package is installed.])
  fi
  SWIG_PYTHON
  _COMPONENTS="$_COMPONENTS python"
fi
AM_CONDITIONAL(WITH_PYTHON, [test x${enable_python} = xtrue])

###-------------------------------------------------------------------------
### Additional compiler warnings (or not) if we're running GCC
###-------------------------------------------------------------------------

# This has to come after AC_PROG_CC _AND_ GNOME_COMPILE_WARNINGS
AC_MSG_CHECKING(what extra warning flags to pass to the C compiler)
if test ${GCC}x = yesx
then
  warnFLAGS=
  CFLAGS="${CFLAGS} -Wno-unused"
  # other flags...
  # These next two are included in the GNOME_COMPILE_WARNINGS
  #warnFLAGS="${warnFLAGS} -Wmissing-prototypes"
  #warnFLAGS="${warnFLAGS} -Wmissing-declarations"
  #warnFLAGS="${warnFLAGS} -Werror-implicit-function-declaration" # In -Wall

  # error-on-warning should not be active in (stable) release tarballs
  if test "x$BUILDING_FROM_SVN" = "xyes"
  then
    # This code is from SVN/SVK, so enable error-on-warning
    error_on_warning_as_default="yes"
  else
    # This is from a tarball, so disable error-on-warning
    error_on_warning_as_default="no"
  fi

  # Enable error-on-warning by default -- I'm tired of fixing other
  # people's missing #includes, etc.
  AC_ARG_ENABLE(error-on-warning,
    [AS_HELP_STRING([--disable-error-on-warning],[disable treating compile warnings as errors])],
    [case "${enableval}" in
       yes) warnFLAGS="${warnFLAGS} -Werror" ; gnc_error_on_warning=yes ;;
       no)  gnc_error_on_warning=no ;;
       *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
     esac],
    [ if test "${error_on_warning_as_default}" = "yes"; then
        warnFLAGS="${warnFLAGS} -Werror";
        gnc_error_on_warning=auto
      else
        gnc_error_on_warning=no
      fi
    ])

  # For gcc >= 3.4.x, specifically enable the new warning switch
  # -Wdeclaration-after-statement in order to preserve source code
  # compatibility to gcc 2.95 and other compilers.
  GCC_VERSION=`${CC} -dumpversion`
  if test "`echo ${GCC_VERSION} | cut -d. -f1`" -ge 3; then
    # This is gcc >= 3.x.x
    if test "`echo ${GCC_VERSION} | cut -d. -f2`" -ge 4; then
      # This is gcc >= 3.4.x
      warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement"
    else if test "`echo ${GCC_VERSION} | cut -d. -f1`" -ge 4; then
           # This is gcc == 4.x.x
           warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement -Wno-pointer-sign"
           # rpmbuild on FC4 forces this flag. Can't hurt to always compile with it.
           warnFLAGS="${warnFLAGS} -D_FORTIFY_SOURCE=2"
         fi
    fi
  fi
  CFLAGS="${warnFLAGS} ${CFLAGS}"
else
  warnFLAGS=none
fi
AC_MSG_RESULT($warnFLAGS)

### --------------------------------------------------------------------------
### Adjustments -- especially executables that aren't generated via
### makefiles, so that we don't have an opportunity to adjust them
### there.

chmod u+x ${srcdir}/src/bin/generate-gnc-script

### --------------------------------------------------------------------------
### Makefile creation

# This is necessary so that .o files in LIBOBJS are also built via
# the ANSI2KNR-filtering rules.
LIBOBJS_SEDSCRIPT="s,\.[[^.]]* ,$U&,g;s,\.[[^.]]*\$\$,$U&,"
AC_SUBST(LIBOBJS_SEDSCRIPT)

AC_CONFIG_FILES(
  po/Makefile.in
  dnl # Makefiles
  Makefile
  accounts/Makefile
  accounts/C/Makefile
  accounts/cs/Makefile
  accounts/da/Makefile
  accounts/de_AT/Makefile
  accounts/de_CH/Makefile
  accounts/de_DE/Makefile
  accounts/el_GR/Makefile
  accounts/en_GB/Makefile
  accounts/es_ES/Makefile
  accounts/es_MX/Makefile
  accounts/fi_FI/Makefile
  accounts/fr_CA/Makefile
  accounts/fr_CH/Makefile
  accounts/fr_FR/Makefile
  accounts/hu_HU/Makefile
  accounts/it/Makefile
  accounts/ja/Makefile
  accounts/ko/Makefile
  accounts/lv/Makefile
  accounts/nl/Makefile
  accounts/nb/Makefile
  accounts/pl/Makefile
  accounts/pt_BR/Makefile
  accounts/pt_PT/Makefile
  accounts/ru/Makefile
  accounts/sk/Makefile
  accounts/sv_SE/Makefile
  accounts/tr_TR/Makefile
  accounts/zh_CN/Makefile
  checks/Makefile
  doc/Makefile
  doc/examples/Makefile
  intl-scm/Makefile
  lib/Makefile
  lib/guile-www/Makefile
  lib/libc/Makefile
  lib/stf/Makefile
  packaging/Makefile
  packaging/win32/Makefile
  packaging/win32/gnucash.iss
  src/Makefile
  src/app-utils/Makefile
  src/app-utils/test/Makefile
  src/backend/Makefile
  src/backend/dbi/Makefile
  src/backend/dbi/test/Makefile
  src/backend/xml/Makefile
  src/backend/xml/test/Makefile
  src/backend/xml/test/test-files/Makefile
  src/backend/xml/test/test-files/xml2/Makefile
  src/backend/sql/Makefile
  src/backend/sql/test/Makefile
  src/bin/Makefile
  src/bin/overrides/Makefile
  src/bin/test/Makefile
  src/core-utils/Makefile
  src/core-utils/test/Makefile
  src/calculation/Makefile
  src/calculation/test/Makefile
  src/debug/Makefile
  src/debug/valgrind/Makefile
  src/doc/Makefile
  src/doc/design/Makefile
  src/doc/xml/Makefile
  src/engine/Makefile
  src/engine/test/Makefile
  src/engine/test-core/Makefile
  src/gnc-module/Makefile
  src/gnc-module/test/Makefile
  src/gnc-module/test/mod-foo/Makefile
  src/gnc-module/test/mod-bar/Makefile
  src/gnc-module/test/mod-baz/Makefile
  src/gnc-module/test/misc-mods/Makefile
  src/gnome/Makefile
  src/gnome/gnucash.desktop.in
  src/gnome/glade/Makefile
  src/gnome/schemas/Makefile
  src/gnome/ui/Makefile
  src/gnome-utils/Makefile
  src/gnome-utils/glade/Makefile
  src/gnome-utils/schemas/Makefile
  src/gnome-utils/test/Makefile
  src/gnome-utils/ui/Makefile
  src/gnome-search/Makefile
  src/html/Makefile
  src/import-export/Makefile
  src/import-export/test/Makefile
  src/import-export/qif-import/Makefile
  src/import-export/qif/Makefile
  src/import-export/qif/test/Makefile
  src/import-export/qif-import/schemas/Makefile
  src/import-export/qif-import/test/Makefile
  src/import-export/schemas/Makefile
  src/import-export/ofx/Makefile
  src/import-export/ofx/test/Makefile
  src/import-export/csv/Makefile
  src/import-export/log-replay/Makefile
  src/import-export/aqbanking/Makefile
  src/import-export/aqbanking/schemas/Makefile
  src/libqof/Makefile
  src/libqof/qof/Makefile
  src/libqof/qof/test/Makefile
  src/optional/Makefile
  src/optional/gtkmm/Makefile
  src/optional/python-bindings/Makefile
  src/optional/python-bindings/tests/Makefile
  src/pixmaps/Makefile
  src/quotes/Makefile
  src/register/Makefile
  src/register/ledger-core/Makefile
  src/register/ledger-core/test/Makefile
  src/register/register-core/Makefile
  src/register/register-core/test/Makefile
  src/register/register-gnome/Makefile
  src/register/register-gnome/test/Makefile
  src/report/Makefile
  src/report/report-gnome/Makefile
  src/report/report-gnome/test/Makefile
  src/report/report-system/Makefile
  src/report/report-system/test/Makefile
  src/report/standard-reports/Makefile
  src/report/standard-reports/test/Makefile
  src/report/business-reports/Makefile
  src/report/locale-specific/Makefile
  src/report/locale-specific/us/Makefile
  src/report/locale-specific/us/test/Makefile
  src/report/stylesheets/Makefile
  src/report/stylesheets/test/Makefile
  src/report/utility-reports/Makefile
  src/report/utility-reports/test/Makefile
  src/scm/Makefile
  src/scm/gnumeric/Makefile
  src/tax/Makefile
  src/tax/us/Makefile
  src/tax/us/test/Makefile
  src/test-core/Makefile
  src/business/Makefile
  src/business/business-core/Makefile
  src/business/business-core/test/Makefile
  src/business/business-utils/Makefile
  src/business/dialog-tax-table/Makefile
  src/business/business-gnome/Makefile
  src/business/business-gnome/glade/Makefile
  src/business/business-gnome/schemas/Makefile
  src/business/business-gnome/ui/Makefile
  src/business/business-ledger/Makefile
  dnl # Stuff for bill/invoice import plugin
  src/plugins/Makefile
  src/plugins/bi_import/Makefile
  src/plugins/bi_import/glade/Makefile
  src/plugins/bi_import/ui/Makefile
  dnl # non-makefiles
  src/engine/iso-currencies-to-c
  dnl # Please read doc/build-system before adding *anything* here
  ,
  dnl # init-commands go here
)
# A few files need extra actions at creation time
AC_CONFIG_FILES([src/gnc-test-env], [chmod u+x src/gnc-test-env])
AC_CONFIG_FILES([src/bin/overrides/gnucash-make-guids], [chmod u+x src/bin/overrides/gnucash-make-guids])

AC_OUTPUT


AC_MSG_RESULT([
  Options detected/selected
  -------------------------
  gnucash version ...... : $VERSION
  Build for host ....... : $host
  Optional components... : $_COMPONENTS
  HTML engine .......... : $with_html_engine
  Extra Warnings ....... : $warnFLAGS
  CPPFLAGS ............. : $CPPFLAGS
  CFLAGS ............... : $CFLAGS
  LDFLAGS .............. : $LDFLAGS
  prefix................ : ${prefix}


])
